水無瀬の部屋 > Programming > sample > tools > dlg > browsbox > browsbox.cpp |
---|
1: //*********************************************************
2: // プロジェクト: フォルダ参照ダイアログ
3: // ファイル名: browsbox.cpp
4: //*********************************************************
5: #include <dlg/browsbox/browsbox.h> //
6: #include <header/tooldbg.h> // ASSERT(),
7: #include <header/toolbase.h> //
8: #include <header/toolwind.h>
9: #include <header/toolsysx.h>
10:
11:
12: //---------------------------------------------------------
13: // ファイルスコープ関数 の 宣言
14: //---------------------------------------------------------
15: static int CALLBACK BrowseBoxCallbackProc( HWND hWnd, UINT uMsg, LPARAM lParam, LPARAM lpData );
16:
17:
18: //*********************************************************
19: // BrowseForFolder
20: // flags …… BIF_RETURNONLYFSDIRS, BIF_NEWDIALOGSTYLE, BIF_BROWSEINCLUDEURLS, etc……
21: //*********************************************************
22: ITEMIDLIST *
23: BrowseForFolder
24: (
25: HWND hWnd,
26: BFFCALLBACK CallbackProc,
27: UINT flags,
28: const char *title,
29: const char *defpath
30: )
31: {
32: // パラメタの仮定
33: ASSERT( IsValidStringPtr( title ) );
34: ASSERT( !hWnd || IsValidWindow( hWnd ) );
35: ASSERT( !defpath || IsValidStringPtr( defpath ) );
36: ASSERT( !CallbackProc || IsValidCodePtr( CallbackProc ) );
37:
38: BROWSEINFO bi;
39: memzero( &bi, sizeof( bi ) );
40: bi.hwndOwner = hWnd; //
41: bi.ulFlags = flags; //
42: bi.lpszTitle = title; // タイトル
43: bi.lpfn = CallbackProc; //
44: bi.lParam = (LPARAM)defpath; // デフォルトのフォルダ
45: return SHBrowseForFolder( &bi );
46: }//BrowseForFolder
47:
48: //*********************************************************
49: // BrowseBox
50: // flags …… BIF_RETURNONLYFSDIRS, BIF_BROWSEINCLUDEURLS, etc……
51: //*********************************************************
52: bool
53: BrowseBox
54: (
55: HWND hWnd,
56: UINT flags,
57: const char *title,
58: char *buf,
59: int bufsize,
60: const char *defpath
61: )
62: {
63: // パラメタの仮定
64: ASSERT( IsEnoughPathBufferSize( bufsize ) ); // [WARN]
65: ASSERT( !hWnd || IsValidWindow( hWnd ) );
66: ASSERT( IsValidStringBufferPtr( buf, bufsize ) );
67: ASSERT( IsValidStringPtr( defpath ) );
68: ASSERT( IsValidStringPtr( title ) );
69: DESTROY_TEXT_BUFFER( buf, bufsize );
70:
71: IMalloc *pMalloc;
72: if ( NOERROR != SHGetMalloc( &pMalloc ) )
73: return false;
74:
75: ITEMIDLIST *pidl =
76: BrowseForFolder
77: (
78: hWnd,
79: BrowseBoxCallbackProc,
80: flags | BIF_NEWDIALOGSTYLE | BIF_RETURNONLYFSDIRS,
81: title,
82: defpath
83: );
84: if ( pidl )
85: {
86: if ( GetPathFromIDList( pidl, buf, bufsize ) )
87: {
88: pMalloc->Free( pidl );
89: pMalloc->Release();
90: return true;
91: }
92: pMalloc->Free( pidl );
93: }
94: pMalloc->Release();
95: return false;
96: }//BrowseBox
97:
98:
99: //******************************************************************************************************************
100: // callback
101: //******************************************************************************************************************
102: //*********************************************************
103: // BrowseBoxCallbackProc
104: //*********************************************************
105: static
106: int
107: CALLBACK
108: BrowseBoxCallbackProc
109: (
110: HWND hWnd,
111: UINT uMsg,
112: LPARAM lParam,
113: LPARAM lpData
114: )
115: {
116: if ( ( BFFM_INITIALIZED == uMsg ) && lpData )
117: {
118: SendMessage( hWnd, BFFM_SETSELECTION, true, lpData );
119: }
120:
121: if ( ( BFFM_SELCHANGED == uMsg ) && lParam )
122: {
123: ITEMIDLIST *pidl = (ITEMIDLIST *)lParam;
124:
125: char path[ MAX_PATH_BUF ];
126: if ( GetPathFromIDList( pidl, path, numof(path) ) )
127: {
128: SendMessage( hWnd, BFFM_ENABLEOK , 0, true );
129: }
130: else
131: {
132: SendMessage( hWnd, BFFM_ENABLEOK , 0, false );
133: }
134: }
135: return 0;
136: }//BrowseBoxCallbackProc
137:
138:
139: //** end **
参照:
水無瀬の部屋 > sample > tools > dlg > browsbox > browsbox.cpp |
---|
このページは cpp2web が出力しました。
水無瀬 優 postmaster@katsura-kotonoha.sakura.ne.jp
http://katsura-kotonoha.sakura.ne.jp/prog/code/tools/dlg/browsbox/browsbox_cpp.shtml
同人ダウンロード販売|DL.Getchu.com